"""
对象的序列化和反序列化:
目的：应用于跨语言跨平台的数据交换
https://github.com/gyujing/Python-100-Days/blob/master/Day21-30/22.%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md
"""

'''
JSON格式 ==> 字符串形式
'''
import json

my_dict = {
    'name': '骆昊',
    'age': 40,
    'friends': ['王大锤', '白元芳'],
    'cars': [
        {'brand': 'BMW', 'max_speed': 240},
        {'brand': 'Audi', 'max_speed': 280},
        {'brand': 'Benz', 'max_speed': 280}
    ]
}
# print(json.dumps(my_dict)) # {"name": "\u9a86\u660a", "age": 40, "friends": ["\u738b\u5927\u9524", "\u767d\u5143\u82b3"], "cars": [{"brand": "BMW", "max_speed": 240}, {"brand": "Audi", "max_speed": 280}, {"brand": "Benz", "max_speed": 280}]}

'''
将字典处理成JSON格式并写入文本文件,
只需要将dumps函数换成dump函数并传入文件对象即可
'''
'''
知识点：
json模块有四个比较重要的函数，分别是：
    dump - 将Python对象按照JSON格式序列化到文件中
    dumps - 将Python对象处理成JSON格式的字符串
    load - 将文件中的JSON数据反序列化成对象
    loads - 将字符串的内容反序列化成Python对象
'''
with open('resources/test.json',mode='w',encoding='utf-8') as f:
    json.dump(my_dict,f)


with open('resources/test.json',mode='r',encoding='utf-8') as f:
    my_dict1 = json.load(f)
    print(type(my_dict1)) # <class 'dict'>
    print(my_dict1) # {'name': '骆昊', 'age': 40, 'friends': ['王大锤', '白元芳'], 'cars': [{'brand': 'BMW', 'max_speed': 240}, {'brand': 'Audi', 'max_speed': 280}, {'brand': 'Benz', 'max_speed': 280}]}
